/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.abmDocente;


import educar.models.Docente;
import educar.models.User;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JOptionPane;



/**
 * <hr>
 * Clase AgregarDocenteController: En esta clase se encuentran los metodos  
 * necesarios para agregar un docente tanto a la base de datos como a la tabla.
 * <hr>
 * @author gaston
 */
public class AgregarDocenteController implements ActionListener, WindowListener{
       
    //Atributo usado para crear una ventana
    private AgregarDocenteView agregarDocenteView;
    
    //Arreglo usado para almacenar los datos del docente
    private String vector[] = new String[3];
    
    //Atributo usado para crear una instancia de docenteController
    private DocenteController docenteControl;

    
// <editor-fold defaultstate="collapsed" desc="Constructor">
    /**
     * <hr>
     * AgregarDocenteController(): Constructor de la clase AgregarDocenteController
     * <hr>
     * @param docenteControler 
     */
    public AgregarDocenteController(DocenteController docenteControler){        
        docenteControl = docenteControler;
        agregarDocenteView = new AgregarDocenteView();
        agregarDocenteView.setActionListener(this);
        agregarDocenteView.setWindowListener(this);
    }
 // </editor-fold>

// <editor-fold defaultstate="collapsed" desc="//Action setView">    
    /**
     * <hr>
     * setView(): Este metodo hace visible a una ventana.
     * <hr>
     */
    public void setView() {
        agregarDocenteView.setVisible(true);
    }
// </editor-fold>  

// <editor-fold defaultstate="collapsed" desc="Metodos ActionPermormed">
    @Override
    /**
     * <hr>
     * actionPerformed(): Este metodo recibe el evento de un boton.
     * Boton CANCELAR cierra la ventana.
     * Boton ACEPTAR agrega el docente a la base de datos y a la tambla.
     * <hr>
     */
    public void actionPerformed(ActionEvent e) {
        
        //Evalua la procedencia del evento del boton
        Object source = e.getSource();
        if (agregarDocenteView.getJbCancelar() == source){ //Cancelar
            agregarDocenteView.dispose();//Cierra la ventana
        }
        if (agregarDocenteView.getJbAgregar() == source){ //Aceptar 
            vector[0] = agregarDocenteView.getDni(); 
            vector[1] = agregarDocenteView.getNombreYApellido();
            vector[2] = agregarDocenteView.getDireccion(); 
            if (!((vector[0].length() == 0) || (vector[1].length() == 0) || (vector[2].length() == 0))) {
                Docente docente = new Docente(vector);
                User user = new User(vector[1], vector[0], "Docente");
                if (docente.save() && user.save()) {                            
                    docenteControl.agregarATabla(vector);
                    agregarDocenteView.dispose();
                } 
                else { //El docente ya existe
                    JOptionPane.showMessageDialog(null,"Ya existe un registro con el nombre de Docente "+ agregarDocenteView.getNombreYApellido()+".","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                }
            }
            else { //No se ingresaron todos los datos del docente
                JOptionPane.showMessageDialog(null,"Existe al menos un campo sin completar.\n\nRevise los campos ingresados","proyecto 2012",JOptionPane.WARNING_MESSAGE);
            }
        }
    }//Fin del metodo actionPerformed().
    
// </editor-fold>

    
// <editor-fold defaultstate="collapsed" desc="Metodos ActionPerformed no usadas">
    @Override
    public void windowOpened(WindowEvent e) {

    }

    
    @Override
    public void windowClosing(WindowEvent e) {

    }

    
    @Override
    public void windowClosed(WindowEvent e) {

    }

    
    @Override
    public void windowIconified(WindowEvent e) {

    }

    
    @Override
    public void windowDeiconified(WindowEvent e) {

    }

    
    @Override
    public void windowActivated(WindowEvent e) {

    }

    
    @Override
    public void windowDeactivated(WindowEvent e) {

    }
    
// </editor-fold>   

}//Fin de la clase AgregarDocenteController.